Ротация логов вебсервера nginx и apache

Advertisements

Установка

Создание конфигурации

конфигурация

вверху путь к логам, внизу раскоментируйте apache2ctl для логов апача или kill -USR1 для nginx

Тестируем конфиг:

С ключом -d программа будет только эмулировать полезную активность, выводя вам на экран диагностические сообщения

Если всё в порядке, то запускайте утилиту в боевом режиме:

 

И всё, логи будут ротироваться (руками в cron ничего добавлять не надо, всё будет сделано за вас).

В файл /var/lib/logrotate/status станет записывать информация о том, что и когда ротировал logrotate.

Таблица возможных ключей logrotate

Параметр Описание
rotate <число> Количество хранимых файлов
daily weekly monthly Производить ротацию раз в день/неделю/месяц
size <байт> size 1000 size 100k size 1M Производить ротацию если log-файл превысил указанный размер байт Кбайт Мбайт
start <число> число с которого начнётся нумерация файлов
compress Архивировать файлы (по умолчанию gzip)
nocompress Отключает compress
delaycompress Не сжимать ‘свеже’ созданный архив. Например access.log.1 не будет зжат. Используется с compress
create <права><владелец><группа> create 640 root root После ротации создать пустой log-файл. Любые из этих атрибутов могут быть опущены, в этом случае вместо них для нового файла будут использованы атрибуты, имеющие те же значения, что и первоначальный log-файл
nocreate Не создавать файл
copy Создать копию оригинального log-файла, не изменяя его. Исключает create
nocopy Отключает copy
copytruncate Создать копию оригинального log-файла, а потом его ‘обнулить’. Таким образом сам файл не удаляется. Исключает copy, create
ifempty Архивирует даже пустой файл (используется по умолчанию)
notifempty Не архивировать пустые файлы
missingok В случае отсутствия оригинального log-файла не вызовет ошибку
nomissingok В случае отсутствия оригинального log-файла вызовет ошибку
postrotate <команды> endscript Строки, находящиеся между postrotate и endscript будут выполнены как sh скрипт после архивирования log-файла
prerotate <команды> endscript Аналогично postrotate, только действия будут выполнены до начала архивирования
sharedscripts Скрипты postrotate и prerotate будут выполнены только один раз в рамках своей секции.
nosharedscripts Отключает sharedscripts. Скрипты будут выполняются при ротации каждого log-файла, при определение /var/log/apache2/*.log скрипт будет выполнен столько раз сколько уникальных log-файлов будет находится в данной директории
olddir <путь> olddir /home/logs Перемещать архивные файлы в указанную директорию
noolddir Отключает olddir